// pages/favorites/favorites.js
let app = getApp();

Page({
  /**
   * 页面的初始数据
   */
  data: {
    favorites: [],     // 收藏列表
    tokenString: ""    // 用户token
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    // 页面加载时不立即加载数据，而是在onShow中处理
  },

  /**
   * 加载收藏数据
   */
  loadFavorites() {
    // 确保有token才发起请求
    if (!this.data.tokenString) {
      wx.navigateTo({
        url: '../login/login',
      });
      return;
    }
    
    wx.showLoading({
      title: '加载中...',
    });

    wx.request({
      url: 'https://kf.webxyq.com/findAllLike',
      method: 'GET',
      data: {
        appkey: app.globalData.appkey,
        tokenString: this.data.tokenString
      },
      success: res => {
        console.log(res)
        wx.hideLoading();
        if (res.data && res.data.result) {
          // 处理收藏数据
          const favorites = res.data.result || [];
          this.setData({ favorites });
        } else if (res.data.code === 700) {
          // token校验失败，重新登录
          wx.removeStorage({ key: '_token' });
          wx.showToast({
            title: '登录已过期，请重新登录',
            icon: 'none'
          });
          setTimeout(() => {
            wx.navigateTo({
              url: '../login/login',
            });
          }, 1500);
        } else {
          this.setData({ favorites: [] });
          wx.showToast({
            title: res.data.msg || '获取收藏失败',
            icon: 'none'
          });
        }
      },
      fail: err => {
        wx.hideLoading();
        wx.showToast({
          title: '网络错误',
          icon: 'none'
        });
      }
    });
  },

  /**
   * 删除收藏
   */
  onDeleteFavorite(event) {
    const pid = event.currentTarget.dataset.pid;
    
    wx.showModal({
      title: '取消收藏',
      content: '确定要取消收藏此商品吗？',
      success: (res) => {
        if (res.confirm) {
          wx.showLoading({
            title: '处理中...',
          });
          
          wx.request({
            url: 'https://kf.webxyq.com/notlike',
            method: 'POST',
            header: {
              "Content-Type": "application/x-www-form-urlencoded;charset=utf-8"
            },
            data: {
              appkey: app.globalData.appkey,
              tokenString: this.data.tokenString,
              pid: pid
            },
            success: res => {
              console.log(res);
              wx.hideLoading();
              if (res.data.code === 900) { // 明确判断成功状态码
                wx.showToast({
                  title: '已取消收藏',
                  icon: 'success'
                });
                this.loadFavorites(); // 强制刷新数据
              } else if (res.data.code === 700) {
                // token校验失败，重新登录
                wx.removeStorage({ key: '_token' });
                wx.showToast({
                  title: '登录已过期，请重新登录',
                  icon: 'none'
                });
                setTimeout(() => {
                  wx.navigateTo({
                    url: '../login/login',
                  });
                }, 1500);
              } else {
                wx.showToast({
                  title: res.data.msg || '操作失败',
                  icon: 'none'
                });
              }
            },
            fail: err => {
              wx.hideLoading();
              wx.showToast({
                title: '网络错误',
                icon: 'none'
              });
            },
            complete: () => {
              wx.hideLoading();
            }
          });
        }
      }
    });
  },

  /**
   * 跳转到商品详情
   */
  goToDetail(event) {
    const pid = event.currentTarget.dataset.pid;
    wx.navigateTo({
      url: `../detail/detail?pid=${pid}`,
    });
  },

  /**
   * 跳转到菜单页
   */
  goToMenu() {
    wx.switchTab({
      url: '../menu/menu',
    });
  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {
    // 获取token
    wx.getStorage({
      key: "_token",
      success: res => {
        // 只有当token变化时才更新并重新加载
        if (res.data !== this.data.tokenString) {
          this.setData({
            tokenString: res.data
          }, () => { // 在回调中确保token已更新后再加载数据
            this.loadFavorites(); 
          });
        } else if (this.data.favorites.length === 0) {
          // 如果token没变但收藏列表为空，也重新加载
          this.loadFavorites();
        }
      },
      fail: err => {
        wx.navigateTo({
          url: '../login/login',
        });
      }
    });
  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {
    this.loadFavorites();
    wx.stopPullDownRefresh();
  }
});